<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // var a = -1
      // // console.log(Boolean(a++))
      // // a 是 0 a++ 整体是-1
      // // a 是 0 ++a 整体是 0
      // if(a++){
      //     console.log("666");
      // }else {
      //     console.log("888");
      // }

      // ============

      //   console.log(a, b); // undefined undefined
      //   if (true) {
      //     var a = 1;
      //   } else {
      //     var b = 2;
      //   }
      //   console.log(a, b); // 1 undefined
      // ==============

      // 分为执行前（预编译）和 执行， 预编译的时候并没有执行代码
      //   var a = 100;
      //   function fn() {
      //     console.log(a); // undefinde
      //     return;
      //     var a = 110;
      //   }
      //   fn();

      // =============
      //  function fn(){
      //     var a = b = 100 // var a = 100  b = 100
      //  }

      //  fn()
      //  console.log(a);
      //  console.log(b);

      //  ==========

      var n = 100;
      function fn() {
        console.log(n); // 100
      }

      function gn() {
        var n = 200;
        console.log(n); // 200
        fn();
      }

      gn();
      // console.log(n); // 100

      // =============
      // var a = 100

      // function b(){
      //     a = 200
      // }
      // b()
      // console.log(a); // 200

      // =============

      // console.log(fn); // undefinde , 在执行前会将里面的 fn 提升，类似于 var fn  但是新版谷歌不会

      // if(false){
      //     function fn(){
      //         console.log("fn");
      //     }
      // }

      // ============
      //  console.log(fn); // undefined
      // //  window.fn() // 报错  window.fn is not function
      //  console.log(window.fn); // undefined
      //  if("fn" in window){
      //     // 这个文本上下文会链接到window上，在一开始会将fn提升到全局，里面执行时将这个fn 赋值为 函数
      //     fn() // fn.....
      //     function fn(){
      //         console.log("fn.....");

      //     }
      //  }
      //  fn() // fn..... ，其实访问的是全局的fn

      // ==========

      // var a = 12 ; b = 13 ; c = 14;
      // function fn(a){
      //     console.log(a,b,c); // 10 13 14
      //     a = 100;
      //     b = 200;
      //     console.log(a,b,c); // 100 200 14
      // }
      // b = fn(10)
      // console.log(a,b,c); // 12 undefined 14

      // var arr = [11,22]
      // function fn(arr){
      //   arr[0] = 100
      //   arr = [666]
      //   arr[0] = 0
      //   console.log(arr); // [0]

      // }
      // fn(arr)
      // console.log(arr); // [100 , 22]

      // var i = 0;
      // function A() {
      //   var i = 10;
      //   function x() {
      //     console.log(i);
      //   }
      //   return x;
      // }

      // var y = A();
      // y();
      // function B() {
      //   var i = 20;
      //   y();
      // }
      // B();

      // 打印两个 10

      // ===============

      // var i = 20
      // function fn(){
      //   i -= 2;
      //   var i = 10
      //   return function (n){
      //     console.log((++i) - n);
      //   }
      // }
      // var f = fn();
      // f(1);
      // f(2);
      // fn()(3)
      // console.log(i);
      // 10 10 8 20

      // =================

      var i = 10;
      function a() {
        i++;
      }
      a();
      console.log(i);
    </script>
  </body>
</html>
